package ve.edu.ucla.laboratorio.dals.modelo.prueba;

import java.util.Arrays;
import java.util.List;

import android.content.Context;

import ve.edu.ucla.laboratorio.dals.R;
import ve.edu.ucla.laboratorio.dals.modelo.*;

public class EjemploRepositorioDatos implements RepositorioDatos {
	private static final List<EjemploUsuario> usuarios = Arrays.asList(
			// Mayoristas
			new EjemploUsuario("dals", "DALS C.A.", "J123", "0555-5555555", "dals@gmail.com", 1, "1234",
					Arrays.asList(Permiso.CONSULTAR_ORDENES, Permiso.MAYORISTA), 1, "0108-32", "AJ-32"),

			// Transportistas
			new EjemploUsuario("vex05", "Viajes Express 2005", "J123", "0212-3265489", "info@vex05.com", 1, "1234",
					Arrays.asList(Permiso.CONSULTAR_ORDENES, Permiso.TRANSPORTISTA), 1, "0105-659", "00254"),
			new EjemploUsuario("saec", "S.A.E.C C.A.", "J123", "0251-2364578", "saec@gmail.com", 1, "1234",
					Arrays.asList(Permiso.CONSULTAR_ORDENES, Permiso.TRANSPORTISTA), 3, "0108-659", "JLI-024980"),
			new EjemploUsuario("altair", "Transporte Altair", "J123", "0274-2136578", "altair@gmail.com", 1, "1234",
					Arrays.asList(Permiso.CONSULTAR_ORDENES, Permiso.TRANSPORTISTA), 3, "0108-659", "LVI-024980"),

			// Operarios
			new EjemploUsuario("jsilva", "Jose Silva", "J123", "0555-5555555", "dals@gmail.com", 1, "1234", Arrays
					.asList(Permiso.CONSULTAR_ORDENES, Permiso.OPERARIO), 3, "0108-32", "AJ-32"),
			new EjemploUsuario("douglas", "Douglas Liscano", "V-1990250", "0426-4520562", "douglas2428@gmail.com", 1, "1234", Arrays
					.asList(Permiso.CONSULTAR_ORDENES, Permiso.OPERARIO), 1, "0108-9563", "LVI-024980"),		
			new EjemploUsuario("lgarcia", "Luis Garcia", "V-20249326", "0424-5492374", "lgarcia14@gmail.com", 1, "1234", Arrays
					.asList(Permiso.CONSULTAR_ORDENES, Permiso.OPERARIO), 2, "0108-9563", "LVI-024980"),			
			new EjemploUsuario("arrieche", "Andres Arrieche", "V-1990250", "0412-0671138", "andres@gmail.com", 1, "1234", Arrays
					.asList(Permiso.CONSULTAR_ORDENES, Permiso.OPERARIO), 3, "0108-9563", "LVI-024980"),			
			
			// Propietarios
			new EjemploUsuario("jgonz", "Juan Gonzalez", "J123", "0416-1258654", "juang@gmail.com", 1, "1234", Arrays
					.asList(Permiso.CONSULTAR_ORDENES, Permiso.PROPIETARIO), 1, "0105-659", "LVI-024980"),
			new EjemploUsuario("cdt", "Cooperativa de Transporte", "J123", "0412-2510548", "transporte@gmail.com", 1, "1234", Arrays
					.asList(Permiso.CONSULTAR_ORDENES, Permiso.PROPIETARIO), 1, "0108-65", "LVI-024980"),
			new EjemploUsuario("transport", "Transport", "J123", "0251-5698745", "transport@gmail.com", 1, "1234", Arrays
					.asList(Permiso.CONSULTAR_ORDENES, Permiso.PROPIETARIO), 3, "0106-659", "LVI-024980"),
			new EjemploUsuario("jenireers", "Jeniree Ramirez", "J123", "0416-0000000", "jenireers@gmail.com", 1, "1234", Arrays
					.asList(Permiso.CONSULTAR_ORDENES, Permiso.PROPIETARIO), 1, "0105-659", "LVI-024980"));

	private static final List<TipoUnidad> tipos = Arrays.asList(
			new TipoUnidad("Gandola carga pesada", "R24", 10000.0, 2000.0, 2, 2000.0),
			new TipoUnidad("Camion cisterna", "RGH21", 4000.0, 450000.0, 2, 300.0),
			new TipoUnidad("Camion carga refrigerada", "3FG34 ", 15000.0, 30000.0, 2, 300.0));

	private static final List<FormaPago> pago = Arrays.asList(
			new FormaPago(1, "Porcentual", 30.2, 90.000),
			new FormaPago(2, "Absoluta", 100.0, 150.000));

	private static final List<Banco> bancos = Arrays.asList(
			new Banco(1, "Banesco"),
			new Banco(2, "Mercantil"),
			new Banco(3, "Provincial"),
			new Banco(4, "Banco de Venezuela"));

	private static final List<Mayorista> mayoristas = Arrays.asList(
			new Mayorista(usuarios.get(0)));
	
	private static final List<Transportista> transportistas = Arrays.asList(
			new Transportista(usuarios.get(1), 20.5),
			new Transportista(usuarios.get(2), 30.5),
			new Transportista(usuarios.get(3), 40.5));

	private static final List<Propietario> propietarios = Arrays.asList(
			new Propietario(usuarios.get(8), 2, "vex05"),
			new Propietario(usuarios.get(9), 1, "vex05"),
			new Propietario(usuarios.get(10), 2, "vex05"),
			new Propietario(usuarios.get(11), 2, "vex05"));

	private static final List<UnidadTransporte> unidades = Arrays.asList(
			new UnidadTransporte("KBP-55P", "jgonz", tipos.get(0), 73580,
					EstadoUnidadTransporte.DISPONIBLE, "En regla"),
			new UnidadTransporte("ATGSAGSD", "jgonz", tipos.get(1), 450000,
					EstadoUnidadTransporte.MANTENIMIENTO, "Proximos a vencer"),
			new UnidadTransporte("ATSDFRSF ", "jgonz", tipos.get(2), 300000,
					EstadoUnidadTransporte.DISPONIBLE, "Vencidos"));

	private static final List<Operario> operarios = Arrays.asList(
			new Operario(usuarios.get(4), 30, EstadoOperario.EN_VIAJE, "1990250", "Vigente", "vexp05"),
			new Operario(usuarios.get(5), 30, EstadoOperario.EN_VIAJE, "LFG-2365", "Vigente", "vexp05"),
			new Operario(usuarios.get(6), 35, EstadoOperario.DISPONIBLE, "LFG-2365", "Vigente", "vexp05"),
			new Operario(usuarios.get(7), 48, EstadoOperario.DISPONIBLE, "LFG-2365", "Vigente", "vexp05"));

	private static final List<Movimiento> movimientos = Arrays.asList();

	private static final List<EjemploImagen> imagenes = Arrays.asList(
			new EjemploImagen(1, R.drawable.prueba_dals_logo));

	private final Context contexto;

	public EjemploRepositorioDatos(Context contexto) {
		this.contexto = contexto;
	}

	public RepositorioUsuarios nuevoRepositorioUsuarios() {
		return new EjemploRepositorioUsuarios(usuarios);
	}

	public RepositorioTransportistas nuevoRepositorioTransportistas() {
		return new EjemploRepositorioTransportistas(transportistas);
	}

	public RepositorioImagenes nuevoRepositorioImagenes() {
		return new EjemploRepositorioImagenes(imagenes, contexto);
	}

	public RepositorioPropietarios nuevoRepositorioPropietarios() {
		return new EjemploRepositorioPropietarios(propietarios);
	}

	public RepositorioOperarios nuevoRepositorioOperarios() {
		return new EjemploRepositorioOperarios(operarios);
	}

	public RepositorioMayoristas nuevoRepositorioMayoristas() {
		return new EjemploRepositorioMayoristas(mayoristas);
	}

	public RepositorioFinanzas nuevoRepositorioFinanzas() {
		return new EjemploRepositorioFinanzas(movimientos);
	}

	public RepositorioBancos nuevoRepositorioBancos() {
		return new EjemploRepositorioBancos(bancos);
	}

	public RepositorioUnidadesTransporte nuevoRepositorioUnidadesTransporte() {
		return new EjemploRepositorioUnidadesTransporte(unidades);
	}
}
